package org.example.day;

import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * @Description: TODO
 * @Author wyatt
 * @Data 2024/06/12 21:57
 */
//给定一个包含大写字母和小写字母的字符串
// s ，返回 通过这些字母构造成的 最长的 回文串 的长度。
//
// 在构造过程中，请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。
//
//
//
// 示例 1:
//
//
//输入:s = "abccccdd"
//输出:7
//解释:
//我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
//
//
// 示例 2:
//
//
//输入:s = "a"
//输出:1
//解释：可以构造的最长回文串是"a"，它的长度是 1。
//
//
//
//
// 提示:
//
//
// 1 <= s.length <= 2000
// s 只由小写 和/或 大写英文字母组成
//
//
// Related Topics 贪心 哈希表 字符串 👍 599 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
public class Solution409 {

    public static void main(String[] args) {
        Solution409 solution409 = new Solution409();
        System.out.println(solution409.longestPalindrome("abccccdd"));
    }

    public int longestPalindrome(String s) {
        HashMap<Character, Integer> countMap = new HashMap<>();
        for(char c : s.toCharArray()){
            countMap.putIfAbsent(c, 0);
            countMap.put(c, countMap.get(c) + 1);
        }

        int count = 0;
        int mid = 0;

        for (Integer v : countMap.values()) {
            count += (v / 2) * 2;
            mid = Math.max(mid, v % 2);

        }

        return count + mid;
    }

}
